#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <numeric>
#include <vector>
#include <iterator>
#include <functional>
#include <boost/bind.hpp>
#include <boost/timer.hpp>
#include <boost/shared_ptr.hpp>

using namespace std;

template < typename T, void (T::*)() >
struct Helper1
{
  Helper1(int); 
};

struct Helper2 
{
  template<typename T> 
  Helper2(const T&);
  
  char unused[2];
};

template <typename T>
char helper(T&, Helper1<T, &T::func> unused=0);

Helper2 helper(Helper2);

template <typename T>
struct exist_func 
{
  static T* p;
  enum {value = sizeof(helper(*p))==sizeof(char)};
};

int main(int argc, char **argv)
{
	return 0;
}
